package com.yss.sofa.framework.services.report;

import java.util.Map;

import com.yss.sofa.framework.services.Service;

/**
 * 报表自定义表单验证器<br>
 * 业务组件可实现此接口来验证表单历史数据的合法性<br>
 * 此接口的实现类需要发布为OSGI服务，标准发布即可，无需额外属性<br>
 * 在整个业务系统中可以实现多个验证器，在一次验证中，所有验证器均会被调用一次（不保证调用顺序）<br>
 */
public interface ReportCustomFormValidator extends Service{
	/**
	 * 判断报表是否需要进行表单验证
	 * @param code 报表编码
	 * @return true=支持，false=不支持，若返回false则不会调用validate方法
	 */
	public boolean canValidate(String code);
	/**
	 * 验证并过滤参数，注意：如果验证时需要获取用户信息，一定要从入参params中获取，不要从其他途径获取<br>
	 * 过滤时可以直接删掉params的某些项（map.remove(key)），也可以改变params中某些项的值（map.put(key,new_value)），增加新的项没有意义
	 * @param params 报表的一份参数历史，key=参数code，value=参数值，包含SYS_*，可从中获取用户和报表
	 * @return 过滤后的合法参数
	 */
	public Map<String,String> validate(Map<String,String> params);
}
